If a given icon is not available for neither the current theme nor any
of the fallback options (default theme -"Adwaita", "gnome"...), the
call to gtk_icon_theme_lookup_by_gicon() will return a NULL value, which
returned by the Shell Toolkit as is, causing trouble in the Shell's JS
code when calling shell_app_create_icon_texture() to create an icon.
To at least mitigate the chances of this having this issue happening, we
should at least try to load the standad 'image-missing' icon from the
Icon Naming Specification spec when we receive a NULL here, so that
at least we try to show something to the user, even if it's ugly.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1121
#define CACHE_PREFIX_FILE "file:"
#define CACHE_PREFIX_FILE_FOR_CAIRO "file-for-cairo:"
+#define IMAGE_MISSING_ICON_NAME "image-missing"
+
struct _StTextureCachePrivate
{
GtkIconTheme *icon_theme;
size, scale,
lookup_flags);
if (info == NULL)
- return NULL;
+ {
+ /* Do not give up without even trying to pick the image-missing fallback icon. */
+ info = gtk_icon_theme_lookup_icon_for_scale (theme,
+ IMAGE_MISSING_ICON_NAME,
+ size, scale,
+ GTK_ICON_LOOKUP_USE_BUILTIN);
+ if (info == NULL)
+ return NULL;
+ }
gicon_string = g_icon_to_string (icon);
/* A return value of NULL indicates that the icon can not be serialized,